package org.aliwo.concurrency;

import java.util.concurrent.LinkedBlockingQueue;

/**
 *  linkedBlockingQueue 学习
 */
public class LinkedBlockQueueTest {

    public static void main(String[] args) throws InterruptedException {
        LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>();

        // 往队列里添加元素

        //  实际上调用的是offer，区别是在队列满的时候，add会抛出异常
        System.out.println(queue.add("1"));;
        // 队列如果满了，直接入队失败
        System.out.println(queue.offer("3"));;
        // 在队列满的时候，会进入阻塞的状态
        queue.put("2");


        // 从队列中取出元素
        // 直接调用pool，唯一的区别即使remove会抛出异常，而pool在队列为空的时候直接返回null
        System.out.println(queue.remove());;
        // 在队列为空的时候直接返回null
        System.out.println(queue.poll());
        // 在队列为空的时候，会进入等待的状态
        System.out.println(queue.take());;
        System.out.println( queue);
    }
}
